package com.example.myapplication

import android.os.Bundle
import android.util.Log
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext


class Coroutines : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        enableEdgeToEdge()
        setContentView(R.layout.activity_coroutines)

//        // Demo1: 启动一个协程
//        CoroutineScope(Dispatchers.Main).launch {
//            Log.d("CoroutinesActivity", "协程开始执行 [线程: ${Thread.currentThread().name}]")
//            // 挂起函数 - 不会阻塞主线程
//            delay(2000) // 模拟耗时操作
//            Log.d("CoroutinesActivity", "协程执行完毕 [线程: ${Thread.currentThread().name}]")
//        }
//        Log.d("CoroutinesActivity", "主线程继续执行 [线程: ${Thread.currentThread().name}]")
        // Demo2: 线程切换
        CoroutineScope(Dispatchers.Main).launch {
            // 在主线程执行
            Log.d("CoroutinesActivity", "UI操作 [线程: ${Thread.currentThread().name}]")

            // 切换到IO线程执行网络请求
            val result = withContext(Dispatchers.IO) {
                Log.d("CoroutinesActivity", "网络请求 [线程: ${Thread.currentThread().name}]")
                delay(1000) // 模拟网络请求
                "返回的数据"
            }

            // 自动切回主线程
            Log.d("CoroutinesActivity", "显示结果: $result [线程: ${Thread.currentThread().name}]")
        }
    }
}